Certain linear matrix equations take the form,A*x=b,  (EQ. 1)where A and b are known matrices and x is an unknown matrix. To solve these equations, input matrix A may be triangulated into a product of a lower triangular matrix L—i.e., a matrix with zero elements above the diagonal—and its transpose matrix L′. By rewriting EQ. 1 as L*L′*x=b and setting y=L′*x, elements of x can be solved in a two-step process: y is first solved by forward substitution from L*y=b. Then, having determined y and L (and thus L′), a backward substitution operation is applied to compute elements of x from y=L′*x.
Previous linear equation solvers traditionally perform the aforementioned matrix operations as three distinct operations. First, these solvers solve for triangulated matrix L by applying Cholesky decomposition to input matrix A. Second, the solvers solve for y by applying forward substitution to L*y=b. Third, the solvers compute x by applying backward substitution to y=L′*x. Performing these operations separately may impose significant latency and resource usage, which may be problematic, particularly as operations on large matrices become more common.